import router from '@/router'
import { useUserStore } from '@/stores/userStore'
import axios from 'axios'
import { ElMessage } from 'element-plus'

// 创建axios实例
const request = axios.create({
  baseURL: import.meta.env.VITE_APP_BASE_API,
  timeout: 5000,
})
// 请求拦截器
request.interceptors.request.use((config) => {
  const userStore = useUserStore()
  const tokenInfo = userStore.tokenInfo
  const isLoginOrRegister = config.url?.includes('/login') || config.url?.includes('/register')
  if (tokenInfo) {
    const tokenName = tokenInfo.tokenName
    const tokenValue = tokenInfo.tokenValue
    if (tokenName && tokenValue) {
      config.headers[tokenName] = tokenValue
    }
  }
  else if (!isLoginOrRegister) {
    ElMessage({
      type: 'success',
      message: '退出成功',
    })

    router.replace('/login')
  }
  return config
})
// 响应拦截器
request.interceptors.response.use((response) => {
  return response.data
}, (error) => {
  let msg = ''
  if (error.status === 401) {
    router.replace('/login')
  }
  // 处理网络错误
  const status = error.status
  switch (status) {
    case 403:
      msg = '无权访问'
      break
    case 404:
      msg = '请求地址错误'
      break
    case 500:
      msg = '服务器出现问题'
      break
    default:
      msg = error.data ? error.data : error.response.data
  }
  ElMessage({
    type: 'error',
    message: msg,
  })
  return Promise.reject(error)
})
export default request
